<?php
class DataBase{
	private $link_id; //数据库连接
	private $query; //存储查询
	PRIVATE $pre;
	/**
	 * @param string $host mysql服务器
	 * @param string $user mysql 用户名
	 * @param string $pass mysql 密码
	 * @param string $dbname mysql 数据库名
	 */
	function __construct($host,$user,$pass,$dbname,$dbpre='mao_',$dbchar='UTF8'){
		@$this->link_id=mysql_connect($host,$user,$pass);
		if (!$this->link_id){
			die("数据库连接失败");
		}else{
			$this->pre=$dbpre;
			mysql_select_db($dbname);
			mysql_query("SET NAMES $dbchar");
		}
	}
	/**
	 * 查询数据
	 * @param string $sql SQL查询语句
	 */
	function query($sql){
		$sql=str_replace("@#__", $this->pre, $sql);
		Log::Write($sql,'sql');
		@$this->query=mysql_query($sql);
		if ($this->query)return $this->query;else return false;
	}
	/**
	 * 已数组方式返回查询结果
	 * @param string $sql SQL查询语句
	 */
	function fetchRows($sql){
		$this->query($sql);
		while ($rs=mysql_fetch_array($this->query,MYSQL_ASSOC)){
			$data[]=$rs;
		}
		if (isset($data))return $data;else return false;
	}
	function fetchArray($query=null){
		return mysql_fetch_array($this->query);
	}
	/**
	 * 返回查询结果条数
	 * @param unknown_type $sql
	 */
	function Num_Row($sql=null){
		if ($sql){
			$sql=str_replace("@#__", $this->pre, $sql);
			return mysql_num_rows(mysql_query($sql,$this->link_id));
		}else{
			return mysql_num_rows($this->query);
		}
	}
	//执行一个SQL语句,返回前一条记录或仅返回一条记录
	function GetOne($sql){
		if(!preg_match("/LIMIT/i",$sql)) $sql=(preg_replace("/[,;]$/i", '', trim($sql))." LIMIT 0,1;");
		$this->query($sql);
		return $this->query; 
	}
	
	function __destruct(){
		if ($this->link_id){
			mysql_close($this->link_id);
		}
		if(mysql_error()){
			Log::Write(mysql_error(), 'err-sql');
		}
	}
}